package com.freeter.modules.article.entity;

import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.lang.reflect.InvocationTargetException;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;

import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill;



/**
 * CMS文章表
 * 数据库通用操作实体类（普通增删改查）
 * @author xuchen
 * @email 171998110@qq.com
 * @date 2019-08-17 17:30:53
 */
@TableName("cms_article")
@ApiModel(value = "CmsArticle")
public class CmsArticleEntity<T> implements Serializable {
	private static final long serialVersionUID = 1L;


	public CmsArticleEntity() {
		
	}
	
	public CmsArticleEntity(T t) {
//		try {
////			BeanUtils.copyProperties(this, t);
//		} catch (IllegalAccessException | InvocationTargetException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
	}

	/**
	 * 文章编号
	 */
	
	@TableId 					
	@ApiModelProperty(value = "文章编号",hidden = true)
	private Integer articleId;
	
	/**
	 * 文章标题
	 */
				
	@NotBlank (message = "文章标题不能为空") 			
	@ApiModelProperty(value = "文章标题")
	private String title;
	
	/**
	 * 文章分类编号
	 */
						
	@ApiModelProperty(value = "文章分类编号")
	private Integer classId;

	/**
	 * 文章分类名称编号
	 */

	private String className;
	
	/**
	 * 文章短标题
	 */
						
	@ApiModelProperty(value = "文章短标题")
	private String shortTitle;
	
	/**
	 * 文章来源
	 */
						
	@ApiModelProperty(value = "文章来源")
	private String source;
	
	/**
	 * 文章来源链接
	 */
						
	@ApiModelProperty(value = "文章来源链接")
	private String url;
	
	/**
	 * 文章作者
	 */
						
	@ApiModelProperty(value = "文章作者")
	private String author;
	
	/**
	 * 文章摘要
	 */
						
	@ApiModelProperty(value = "文章摘要")
	private String summary;
	
	/**
	 * 文章正文
	 */
						
	@ApiModelProperty(value = "文章正文")
	private String content;
	
	/**
	 * 文章标题图片
	 */
						
	@ApiModelProperty(value = "文章标题图片")
	private String image;
	
	/**
	 * 文章关键字
	 */
						
	@ApiModelProperty(value = "文章关键字")
	private String keyword;
	
	/**
	 * 相关文章
	 */
						
	@ApiModelProperty(value = "相关文章")
	private String articleIdArray;
	
	/**
	 * 文章点击量
	 */
						
	@ApiModelProperty(value = "文章点击量")
	private Integer click;
	
	/**
	 * 文章排序0-255
	 */
						
	@ApiModelProperty(value = "文章排序0-255")
	private Integer sort;
	
	/**
	 * 文章推荐标志0-未推荐，1-已推荐
	 */
						
	@ApiModelProperty(value = "文章推荐标志0-未推荐，1-已推荐")
	private Integer commendFlag;
	
	/**
	 * 文章是否允许评论1-允许，0-不允许
	 */
						
	@ApiModelProperty(value = "文章是否允许评论1-允许，0-不允许")
	private Integer commentFlag;
	
	/**
	 * 0-草稿、1-待审核、2-已发布、-1-回收站
	 */
						
	@ApiModelProperty(value = "0-草稿、1-待审核、2-已发布、-1-回收站")
	private Integer status;
	
	/**
	 * 文章附件路径
	 */
						
	@ApiModelProperty(value = "文章附件路径")
	private String attachmentPath;
	
	/**
	 * 文章标签
	 */
						
	@ApiModelProperty(value = "文章标签")
	private String tag;
	
	/**
	 * 文章评论数
	 */
						
	@ApiModelProperty(value = "文章评论数")
	private Integer commentCount;
	
	/**
	 * 文章分享数
	 */
						
	@ApiModelProperty(value = "文章分享数")
	private Integer shareCount;
	
	/**
	 * 发布者用户名 
	 */
						
	@ApiModelProperty(value = "发布者用户名 ")
	private String publisherName;
	
	/**
	 * 发布者编号
	 */
						
	@ApiModelProperty(value = "发布者编号")
	private Integer uid;
	

	
	/**
	 * 文章发布时间
	 */
					
	@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 			
	@TableField(fill = FieldFill.INSERT) 
	@ApiModelProperty(value = "文章发布时间",hidden = true)
	private Date createTime;
	

	
	/**
	 * 设置：文章编号
	 */
	public void setArticleId(Integer articleId) {
		this.articleId = articleId;
	}
	/**
	 * 获取：文章编号
	 */
	public Integer getArticleId() {
		return articleId;
	}
	/**
	 * 设置：文章标题
	 */
	public void setTitle(String title) {
		this.title = title;
	}
	/**
	 * 获取：文章标题
	 */
	public String getTitle() {
		return title;
	}
	/**
	 * 设置：文章分类编号
	 */
	public void setClassId(Integer classId) {
		this.classId = classId;
	}
	/**
	 * 获取：文章分类编号
	 */
	public Integer getClassId() {
		return classId;
	}
	/**
	 * 设置：文章短标题
	 */
	public void setShortTitle(String shortTitle) {
		this.shortTitle = shortTitle;
	}
	/**
	 * 获取：文章短标题
	 */
	public String getShortTitle() {
		return shortTitle;
	}
	/**
	 * 设置：文章来源
	 */
	public void setSource(String source) {
		this.source = source;
	}
	/**
	 * 获取：文章来源
	 */
	public String getSource() {
		return source;
	}
	/**
	 * 设置：文章来源链接
	 */
	public void setUrl(String url) {
		this.url = url;
	}
	/**
	 * 获取：文章来源链接
	 */
	public String getUrl() {
		return url;
	}
	/**
	 * 设置：文章作者
	 */
	public void setAuthor(String author) {
		this.author = author;
	}
	/**
	 * 获取：文章作者
	 */
	public String getAuthor() {
		return author;
	}
	/**
	 * 设置：文章摘要
	 */
	public void setSummary(String summary) {
		this.summary = summary;
	}
	/**
	 * 获取：文章摘要
	 */
	public String getSummary() {
		return summary;
	}
	/**
	 * 设置：文章正文
	 */
	public void setContent(String content) {
		this.content = content;
	}
	/**
	 * 获取：文章正文
	 */
	public String getContent() {
		return content;
	}
	/**
	 * 设置：文章标题图片
	 */
	public void setImage(String image) {
		this.image = image;
	}
	/**
	 * 获取：文章标题图片
	 */
	public String getImage() {
		return image;
	}
	/**
	 * 设置：文章关键字
	 */
	public void setKeyword(String keyword) {
		this.keyword = keyword;
	}
	/**
	 * 获取：文章关键字
	 */
	public String getKeyword() {
		return keyword;
	}
	/**
	 * 设置：相关文章
	 */
	public void setArticleIdArray(String articleIdArray) {
		this.articleIdArray = articleIdArray;
	}
	/**
	 * 获取：相关文章
	 */
	public String getArticleIdArray() {
		return articleIdArray;
	}
	/**
	 * 设置：文章点击量
	 */
	public void setClick(Integer click) {
		this.click = click;
	}
	/**
	 * 获取：文章点击量
	 */
	public Integer getClick() {
		return click;
	}
	/**
	 * 设置：文章排序0-255
	 */
	public void setSort(Integer sort) {
		this.sort = sort;
	}
	/**
	 * 获取：文章排序0-255
	 */
	public Integer getSort() {
		return sort;
	}
	/**
	 * 设置：文章推荐标志0-未推荐，1-已推荐
	 */
	public void setCommendFlag(Integer commendFlag) {
		this.commendFlag = commendFlag;
	}
	/**
	 * 获取：文章推荐标志0-未推荐，1-已推荐
	 */
	public Integer getCommendFlag() {
		return commendFlag;
	}
	/**
	 * 设置：文章是否允许评论1-允许，0-不允许
	 */
	public void setCommentFlag(Integer commentFlag) {
		this.commentFlag = commentFlag;
	}
	/**
	 * 获取：文章是否允许评论1-允许，0-不允许
	 */
	public Integer getCommentFlag() {
		return commentFlag;
	}
	/**
	 * 设置：0-草稿、1-待审核、2-已发布、-1-回收站
	 */
	public void setStatus(Integer status) {
		this.status = status;
	}
	/**
	 * 获取：0-草稿、1-待审核、2-已发布、-1-回收站
	 */
	public Integer getStatus() {
		return status;
	}
	/**
	 * 设置：文章附件路径
	 */
	public void setAttachmentPath(String attachmentPath) {
		this.attachmentPath = attachmentPath;
	}
	/**
	 * 获取：文章附件路径
	 */
	public String getAttachmentPath() {
		return attachmentPath;
	}
	/**
	 * 设置：文章标签
	 */
	public void setTag(String tag) {
		this.tag = tag;
	}
	/**
	 * 获取：文章标签
	 */
	public String getTag() {
		return tag;
	}
	/**
	 * 设置：文章评论数
	 */
	public void setCommentCount(Integer commentCount) {
		this.commentCount = commentCount;
	}
	/**
	 * 获取：文章评论数
	 */
	public Integer getCommentCount() {
		return commentCount;
	}
	/**
	 * 设置：文章分享数
	 */
	public void setShareCount(Integer shareCount) {
		this.shareCount = shareCount;
	}
	/**
	 * 获取：文章分享数
	 */
	public Integer getShareCount() {
		return shareCount;
	}
	/**
	 * 设置：发布者用户名 
	 */
	public void setPublisherName(String publisherName) {
		this.publisherName = publisherName;
	}
	/**
	 * 获取：发布者用户名 
	 */
	public String getPublisherName() {
		return publisherName;
	}
	/**
	 * 设置：发布者编号
	 */
	public void setUid(Integer uid) {
		this.uid = uid;
	}
	/**
	 * 获取：发布者编号
	 */
	public Integer getUid() {
		return uid;
	}
	/**
	 * 设置：最新评论时间
	 */

	/**
	 * 设置：发布时间
	 */

	/**
	 * 设置：文章发布时间
	 */
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	/**
	 * 获取：文章发布时间
	 */
	public Date getCreateTime() {
		return createTime;
	}

	public String getClassName() {
		return className;
	}

	public void setClassName(String className) {
		this.className = className;
	}
}
